/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package sv.com.intesal.seguridad.controlador;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import sv.com.intesal.clases.Mensaje;
import sv.com.intesal.conexion.cConexion;
import sv.com.intesal.seguridad.bean.ParametroProyecto;
import sv.com.intesal.seguridad.sql.SQLParamteroProyecto;

/**
 *
 * @author JM
 */
public class ParametroProyectoControlador {

    public ResultSet getParametros() throws Exception {
        Connection cnn = null;
        PreparedStatement ps = null;
        try {
            cnn = cConexion.conectar();
            SessionControlador sc = new SessionControlador();
            ps = cnn.prepareStatement(SQLParamteroProyecto.getParametroProyectosSucursal);
            ps.setInt(1, sc.getCodigo_Sucursal());
            return ps.executeQuery();
        } catch (Exception e) {
            throw new Exception(e);
        }
    }

    public ParametroProyecto getParametroProyectoSucursal() throws Exception {
        try {
            ResultSet rs = this.getParametros();
            ParametroProyecto pp = new ParametroProyecto();
            while (rs.next()) {
                pp.setCodigo_pp(rs.getInt("codigo_pp"));
                pp.setCodigo_s(rs.getInt("codigo_s"));
                pp.setNombre_s(rs.getString("nombre_s"));

                pp.setBloque_entrda_mh(rs.getInt("bloque_entrada_mh"));
                pp.setBloque_salida_mh(rs.getInt("bloque_salida_mh"));
                pp.setBloque_devolucion_mh(rs.getInt("bloque_devolucion_mh"));
                pp.setBloque_solicitud_compra(rs.getInt("bloque_solicitud_compra"));
                pp.setBloque_orden_compra(rs.getInt("bloque_orden_compra"));
                pp.setBloque_fusiones(rs.getInt("bloque_fusiones"));
                pp.setBloque_sit(rs.getInt("bloque_sit"));
                pp.setBloque_cfo(rs.getInt("bloque_cfo"));
                pp.setBloque_aj(rs.getInt("bloque_aj"));
                pp.setBloque_utilizacion_mh(rs.getInt("bloque_utilizacion_mh"));

                pp.setCorrelativo_entrada_mh(rs.getInt("correlativo_entrada_mh"));
                pp.setCorrelativo_salida_mh(rs.getInt("correlativo_salida_mh"));
                pp.setCorrelativo_devolucion_mh(rs.getInt("correlativo_devolucion_mh"));
                pp.setCorrelativo_solicitud_compra(rs.getInt("correlativo_solicitud_compra"));
                pp.setCorrelativo_orden_compra(rs.getInt("correlativo_orden_compra"));
                pp.setCorrelativo_fusiones(rs.getInt("correlativo_fusiones"));
                pp.setCorrelativo_sit(rs.getInt("correlativo_sit"));
                pp.setCorrelativo_cfo(rs.getInt("correlativo_cfo"));

                pp.setCorrelativo_aj(rs.getInt("correlativo_aj"));
                pp.setCorrelativo_utilizacion_mh(rs.getInt("correlativo_utilizacion_mh"));
            }
            //rs.close();
            return pp;
        } catch (Exception e) {
            throw new Exception(e);
        }
    }

    public List<ParametroProyecto> getParamterosProyecto() throws Exception {

        List<ParametroProyecto> list = new ArrayList<ParametroProyecto>(0);
        try {
            ResultSet rs = this.getParametros();

            while (rs.next()) {
                ParametroProyecto pp = new ParametroProyecto();

                pp.setCodigo_pp(rs.getInt("codigo_pp"));
                pp.setCodigo_s(rs.getInt("codigo_s"));
                pp.setNombre_s(rs.getString("nombre_s"));

                pp.setBloque_entrda_mh(rs.getInt("bloque_entrada_mh"));
                pp.setBloque_entrda_mh(rs.getInt("bloque_salida_mh"));
                pp.setBloque_entrda_mh(rs.getInt("bloque_devolucion_mh"));
                pp.setBloque_entrda_mh(rs.getInt("bloque_solicitud_compra"));
                pp.setBloque_entrda_mh(rs.getInt("bloque_orden_compra"));
                pp.setBloque_entrda_mh(rs.getInt("bloque_fusiones"));
                pp.setBloque_entrda_mh(rs.getInt("bloque_sit"));
                pp.setBloque_entrda_mh(rs.getInt("bloque_cfo"));
                pp.setBloque_aj(rs.getInt("bloque_aj"));
                pp.setBloque_utilizacion_mh(rs.getInt("bloque_utilizacion_mh"));

                pp.setCorrelativo_entrada_mh(rs.getInt("correlativo_entrada_mh"));
                pp.setCorrelativo_entrada_mh(rs.getInt("correlativo_salida_mh"));
                pp.setCorrelativo_entrada_mh(rs.getInt("correlativo_devolucion_mh"));
                pp.setCorrelativo_entrada_mh(rs.getInt("correlativo_solicitud_compra"));
                pp.setCorrelativo_entrada_mh(rs.getInt("correlativo_orden_compra"));
                pp.setCorrelativo_entrada_mh(rs.getInt("correlativo_fusiones"));
                pp.setCorrelativo_entrada_mh(rs.getInt("correlativo_sit"));
                pp.setCorrelativo_entrada_mh(rs.getInt("correlativo_cfo"));

                pp.setCorrelativo_aj(rs.getInt("correlativo_aj"));
                pp.setCorrelativo_utilizacion_mh(rs.getInt("correlativo_utilizacion_mh"));
                list.add(pp);
            }
            rs.close();
            return list;
        } catch (Exception e) {
            throw new Exception(e);
        }

    }

    public List<ParametroProyecto> getFillGrid() throws Exception {

        List<ParametroProyecto> list = new ArrayList<ParametroProyecto>(0);
        try {
            ResultSet rs = cConexion.conectar().prepareStatement(SQLParamteroProyecto.getParametroProyectosSucursales).executeQuery();

            while (rs.next()) {
                ParametroProyecto pp = new ParametroProyecto();

                pp.setCodigo_pp(rs.getInt("codigo_pp"));
                pp.setCodigo_s(rs.getInt("codigo_s"));
                pp.setNombre_s(rs.getString("nombre_s"));

                pp.setBloque_entrda_mh(rs.getInt("bloque_entrada_mh"));
                pp.setBloque_salida_mh(rs.getInt("bloque_salida_mh"));
                pp.setBloque_devolucion_mh(rs.getInt("bloque_devolucion_mh"));
                pp.setBloque_solicitud_compra(rs.getInt("bloque_solicitud_compra"));
                pp.setBloque_orden_compra(rs.getInt("bloque_orden_compra"));
                pp.setBloque_fusiones(rs.getInt("bloque_fusiones"));
                pp.setBloque_sit(rs.getInt("bloque_sit"));
                pp.setBloque_cfo(rs.getInt("bloque_cfo"));
                pp.setBloque_aj(rs.getInt("bloque_aj"));
                pp.setBloque_utilizacion_mh(rs.getInt("bloque_utilizacion_mh"));

                pp.setCorrelativo_entrada_mh(rs.getInt("correlativo_entrada_mh"));
                pp.setCorrelativo_salida_mh(rs.getInt("correlativo_salida_mh"));
                pp.setCorrelativo_devolucion_mh(rs.getInt("correlativo_devolucion_mh"));
                pp.setCorrelativo_solicitud_compra(rs.getInt("correlativo_solicitud_compra"));
                pp.setCorrelativo_orden_compra(rs.getInt("correlativo_orden_compra"));
                pp.setCorrelativo_fusiones(rs.getInt("correlativo_fusiones"));
                pp.setCorrelativo_sit(rs.getInt("correlativo_sit"));
                pp.setCorrelativo_cfo(rs.getInt("correlativo_cfo"));

                pp.setCorrelativo_aj(rs.getInt("correlativo_aj"));
                pp.setCorrelativo_utilizacion_mh(rs.getInt("correlativo_utilizacion_mh"));
                list.add(pp);
            }
            rs.close();
            return list;
        } catch (Exception e) {
            throw new Exception(e);
        }
    }

    public Boolean validar_count(Integer codigo_s) throws Exception {

        try {
            PreparedStatement ps = null;
            Connection cnn = null;
            cnn = cConexion.conectar();

            ps = cnn.prepareStatement(SQLParamteroProyecto.getCountSucursalParametroParametro);
            ps.setInt(1, codigo_s);
            ResultSet rs = ps.executeQuery();
            rs.next();

            if (rs.getInt("count") == 0) {
                return false;
            }
            return true;
        } catch (Exception e) {
            throw new Exception(e);
        }

    }

    public void setMantenimiento(ParametroProyecto pp) throws Exception {

        try {
            Connection cnn = null;
            cnn = cConexion.conectar();

            PreparedStatement ps = null;

            if (this.validar_count(pp.getCodigo_s()) == false) {
                ps = cnn.prepareStatement(SQLParamteroProyecto.insertParametroProyecto);
                //ps.setInt(21, pp.getCodigo_s());
            } else {
                ps = cnn.prepareStatement(SQLParamteroProyecto.updateParametroProyecto);
                ps.setInt(21, pp.getCodigo_pp());
            }

            ps.setInt(1, pp.getBloque_entrda_mh());
            ps.setInt(2, pp.getBloque_salida_mh());
            ps.setInt(3, pp.getBloque_devolucion_mh());
            ps.setInt(4, pp.getBloque_solicitud_compra());
            ps.setInt(5, pp.getBloque_orden_compra());
            ps.setInt(6, pp.getBloque_fusiones());
            ps.setInt(7, pp.getBloque_sit());
            ps.setInt(8, pp.getBloque_cfo());

            ps.setInt(9, pp.getCorrelativo_entrada_mh());
            ps.setInt(10, pp.getCorrelativo_salida_mh());
            ps.setInt(11, pp.getCorrelativo_devolucion_mh());
            ps.setInt(12, pp.getCorrelativo_solicitud_compra());
            ps.setInt(13, pp.getCorrelativo_orden_compra());
            ps.setInt(14, pp.getCorrelativo_fusiones());
            ps.setInt(15, pp.getCorrelativo_sit());
            ps.setInt(16, pp.getCorrelativo_cfo());

            ps.setInt(17, pp.getBloque_utilizacion_mh());
            ps.setInt(18, pp.getBloque_aj());
            ps.setInt(19, pp.getCorrelativo_utilizacion_mh());
            ps.setInt(20, pp.getCorrelativo_aj());

            System.out.println(ps.toString());
            ps.executeUpdate();
            ps.close();
            cnn.close();

            Mensaje m = new Mensaje();
            if (pp.getCodigo_pp() == null) {
                m.messageInfo(m.getIinformation());
            } else {
                m.messageInfo(m.getImodificada());
            }
        } catch (Exception e) {
            throw new Exception(e);
        }
    }

    public void updateCorrelativo(String tipo) throws Exception {
//ACTUALIZAR NUMERO DE DOCUMENTO
        try {
            PreparedStatement ps = null;
            Connection cnn = null;
            cnn = cConexion.conectar();

            String filtro = "";
            if (tipo.equals("correlativo_entrada_mh")) {
                filtro = "correlativo_entrada_mh=correlativo_entrada_mh+1";

            } else if (tipo.equals("correlativo_salida_mh")) {
                filtro = "correlativo_salida_mh=correlativo_salida_mh+1";

            } else if (tipo.equals("correlativo_devolucion_mh")) {
                filtro = "correlativo_devolucion_mh=correlativo_devolucion_mh+1";

            } else if (tipo.equals("correlativo_solicitud_compra")) {
                filtro = "correlativo_solicitud_compra=correlativo_solicitud_compra+1";

            } else if (tipo.equals("correlativo_orden_compra")) {
                filtro = "correlativo_orden_compra=correlativo_orden_compra+1";

            } else if (tipo.equals("correlativo_fusiones")) {
                filtro = "correlativo_fusiones=correlativo_fusiones+1";

            } else if (tipo.equals("correlativo_sit")) {
                filtro = "correlativo_sit=correlativo_sit+1";

            } else if (tipo.equals("correlativo_cfo")) {
                filtro = "correlativo_cfo=correlativo_cfo+1";

            } else if (tipo.equals("correlativo_utilizacion_mh")) {
                filtro = "correlativo_utilizacion_mh=correlativo_utilizacion_mh+1";

            } else if (tipo.equals("correlativo_aj")) {
                filtro = "correlativo_aj=correlativo_aj+1";
            }

            SessionControlador sc = new SessionControlador();
            //String sql = "UPDATE PARAMETRO_PROYECTO set " + filtro + " where  codigo_s =" + sc.getCodigo_Sucursal();
            //System.out.println("sql= " + sql);
            ps = cnn.prepareStatement("UPDATE PARAMETRO_PROYECTO set " + filtro + " where codigo_s = ?");
            ps.setInt(1, sc.getCodigo_Sucursal());
            ps.executeUpdate();

            ps.close();
            //cnn.close();
        } catch (Exception e) {
            throw new Exception(e);
        }
    }
}
